import MyPromise from "./MyPromise.js"

export function request1(url,callback) {

  let xhr = new XMLHttpRequest();
  xhr.open("GET", url, true);
  xhr.setRequestHeader("Content-type", "application/json");

  xhr.send(null);

  // xhr.onreadystatechange = function () {
  //
  //   if (xhr.readyState === 4) {
  //     return JSON.parse(xhr.responseText);
  //   }
  // };


  xhr.onload = function () {
    callback(JSON.parse(xhr.responseText));
  }


}

export function request2(url) {

 return new Promise((resolve, reject) => {
    let xhr = new XMLHttpRequest();
    xhr.open("GET", url, true);
    xhr.setRequestHeader("Content-type", "application/json");
    xhr.send(null);
    xhr.onload = function () {
      resolve(JSON.parse(xhr.responseText));
    };

    xhr.onerror = function () {
      reject(new Error(xhr.error));

    }
  })

}


export function request3(url) {

  // 1. 类 : MyPromise
  // 2. new 的时候 在构造中传递一个参数
  // 3. 参数是一个回调
  // 4. 回调里面是两个函数 成功的时候 调用第一个参数resolve  失败的时候调用第二个参数
  // 5. resolve 之后 结果交给谁?
  // 6. then方法 接收的就是 resolve执行后的结果

  return new MyPromise((resolve, reject) => {
    // resolve(JSON.parse(xhr.responseText)); // 立马执行不算异步
    let xhr = new XMLHttpRequest();
    xhr.open("GET", url, true);
    xhr.setRequestHeader("Content-type", "application/json");
    xhr.send(null);
    xhr.onload = function () {
      resolve(JSON.parse(xhr.responseText));
    };

    xhr.onerror = function () {
      reject(new Error(xhr.error));

    }
  })

}



